console.log('1');

setTimeout(function() {
    console.log('2');
    // process.nextTick(function() {
    //     console.log('3');
    // })
    new Promise(function(resolve) {
        console.log('4');
        resolve();
    }).then(function() {
        console.log('5')
    })
})
// process.nextTick(function() {
//     console.log('6');
// })
new Promise(function(resolve) {
    console.log('7');
    resolve();
}).then(function() {
    console.log('8')
})

setTimeout(function() {
    console.log('9');
    // process.nextTick(function() {
    //     console.log('10');
    // })
    new Promise(function(resolve) {
        console.log('11');
        resolve();
    }).then(function() {
        console.log('12')
    })
})
// 1 7 8 2 4 5 9 11 12










// script start =》  async2 end => Promise => script end => async1 end  => async2 end = promise1 =》 promise2 
// console.log('script start') 
// async function async1() {
//     await async2() // reoslve Prmoise
//     console.log('async1 end') //??? 是第一个微任务
//     await async2()
//     console.log('async3 end') // 再次创建一个微任务
// }
// async function async2() {
//     console.log('async2 end')
// }
// async1()

// // setTimeout(function() {
// //     console.log('setTimeout')
// // }, 0)

// new Promise(resolve => {
//     console.log('Promise')
//     resolve()
// })
// .then(function() {
//     console.log('promise1')
// })
// .then(function() {
//     console.log('promise2')
// })

// console.log('script end')